package cn.turing.firecontrol.device.util;



import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;

import java.lang.reflect.Field;

public class TrimUtil {

    //将实体类的String字段trim
    public static void trimObject(Object obj) {
        if (obj == null) {
            return;
        }
        //getDeclaredFields()：获得某个类的所有声明的字段，即包括public、private和proteced，但是不包括父类的申明字段
        Field[] fields = obj.getClass().getDeclaredFields();
        for (int j = 0; j < fields.length; j++) {
            try {
                //类中的成员变量为private,故必须进行此操作  不然会报错无法访问
                fields[j].setAccessible(true);
                // 字段值
                if (fields[j].getType().getName().equals(java.lang.String.class.getName())) {
                    fields[j].set(obj, fields[j].get(obj).toString().trim());
                }
            }catch (Exception e){
                //这里是跳过的意思
                continue;   //continue语句的作用是跳过本次循环体中余下尚未执行的语句，立即进行下一次的循环条件判定，可以理解为仅结束本次循环
            }
        }
    }


    //将实体类的String字段trim并转印特殊字符
    public static void trimObjectEscape(Object obj) {
        if (obj == null) {
            return;
        }
        Field[] fields = obj.getClass().getDeclaredFields();
        for (int j = 0; j < fields.length; j++) {
            try {
                fields[j].setAccessible(true);
                // 字段值
                if (fields[j].getType().getName().equals(
                        java.lang.String.class.getName())) {
                    fields[j].set(obj, StringEscapeUtils.unescapeHtml4( fields[j].get(obj).toString().trim()));
                }
            }catch (Exception e){
                continue;
            }
        }
    }
    //当有一个必填字段为空时
    //将实体类的String字段trim
    public static void trimNull(String... strs) {
        for(String str:strs){
            if(StringUtils.isBlank(str)){
                //返回自定义异常 保存失败，输入框不能为空
                throw new RuntimeException(Constants.SAVE_ERROR);
            }
        }

    }

    public static void main(String []args){
        TrimUtil.trimNull();
    }

}
